import { type ResType } from '@ac/types';
import { fetch } from '@ac/utils';
import qs from 'qs';

// 定义登录请求的参数类型
export interface ITopicParams {
	id?: string;
	name: string;
	tags: string;
}

// 定义登录请求的响应类型
export interface ITopicInfoResponse {
	id: string;
	userId: string;
	name: string;
	tags: string;
	createTime: string;
	updateTime: string;
}

export interface ITopicListParams {
	nameKey?: string;
	tagKey?: string;
	pageSize: number;
	pageNum: number;
}

// 新建研究选题
export const addTopic = (data: ITopicParams) => {
	// post<T> 的泛型 T 指定了成功时返回的数据 data 的类型
	return fetch.post<ResType<ITopicInfoResponse>>('/topic/add', qs.stringify(data));
};

// 编辑研究选题
export const editTopic = (data: ITopicParams) => {
	// post<T> 的泛型 T 指定了成功时返回的数据 data 的类型
	return fetch.post<ResType<ITopicInfoResponse>>('/topic/edit', qs.stringify(data));
};

// 删除研究选题
export const deleteTopic = (data: { id: string }) => {
	// post<T> 的泛型 T 指定了成功时返回的数据 data 的类型
	return fetch.post<string>('/topic/delete', qs.stringify(data));
};

// 查询研究选题列表
export const queryTopicPage = (params: ITopicListParams) => {
	// post<T> 的泛型 T 指定了成功时返回的数据 data 的类型
	return fetch.get<ResType<ITopicInfoResponse[]>>('/topic/queryList', params);
};

// 获取选题详情
export const getTopicDetail = (params: { id: string }) => {
	// post<T> 的泛型 T 指定了成功时返回的数据 data 的类型
	return fetch.get<ResType<ITopicInfoResponse>>('/topic/queryOne', params);
};

// 提交选题素材
export const chooseMaterials = (data: { id: string; materialList: string[] }) => {
	// post<T> 的泛型 T 指定了成功时返回的数据 data 的类型
	return fetch.post<string>('/topic/chooseMaterials', data);
};
